在追求更高 TPS 與可擴展性的區塊鏈設計中,交易並行處理(Parallel Transaction Execution) 成為一個熱門話題。像是 Aptos、Sui 等新世代公鏈紛紛主打交易層的非同步執行或平行化執行能力。
那麼問題來了:
作為智能合約平台的領頭羊,以太坊為什麼無法實現交易級的並行處理?
隨著我對以太坊技術實現的原理深挖,逐漸發現了從根本上的問題。
首先我們要先盤一下以太坊的交易處理流程.
以太坊的交易處理,是建立在一個同步、單執行緒、順序化的執行模型上。流程如下:
其他節點收到區塊後,會根據交易順序,從頭至尾重新執行這些交易,並驗證最終狀態根是否一致。收到的 stateRoot 是否等於同步交易之後自己節點上的 stateRoot
單節點執行模型(Single Block Producer)
EVM 是一個順序的狀態機(Global Sequential State Machine)
缺乏靜態可分析的 Access List
執行結果需全網一致
所有節點在驗證區塊時,必須根據相同順序執行所有交易,得出一致的 state root。
假設交易順序不同,即使是同一批交易,也可能導致:
舉例:
執行三筆交易,針對一個空餘額帳戶:
節點 A 執行順序 結果
+100 ETH → +100 ETH → -200 ETH 成功
節點 B 執行順序 結果
-200 ETH → +100 ETH → +100 ETH 第一筆交易就因餘額不足失敗
GAS 模型 + REVERT 機制不利平行處理